
function ListNode(val, next) {
    this.val = (val===undefined ? 0 : val)
    this.next = (next===undefined ? null : next)
}

// 删除链表 head 中值等于 val 的节点，并返回删除节点后的链表的头节点
function removeElements(head, val) {
    // 最小子问题
    if (head == null) return null

    // 删除除了头节点的子链表中指定值的节点
    head.next = removeElements(head.next, val)

    // 处理头节点
    return head.val == val ? head.next : head
}



